Match System that Uses a Non-Indexed Collection of Orders

ABSTRACT

Match engine systems and methods that allow for rapid processing of orders are provided. Pending orders are arranged as a non-indexed collection of orders and may be stored in the cache memory of a processor. The physical locations of pending orders stored in the cache memory may correspond to the order in which they were received at a match engine. New orders are compared to orders in the non-indexed collection of orders in an attempt to match orders.

The present application is a continuation-in-part application of U.S.Ser. No. 11/234,697, filed Sep. 23, 2005 and entitled “Non-IndexedIn-Memory Data Storage and Retrieval,” the entire disclosure of which ishereby incorporated by reference.

FIELD OF THE INVENTION

The present invention relates to systems, methods and user interfacesthat are utilized in connection with the trading of financialinstruments. More particularly, the invention provides mechanisms formatching orders against a non-indexed collection of pending orders.

DESCRIPTION OF THE RELATED ART

Modern exchanges must process and monitor a large volume of tradingdata, such as orders for financial instruments. Financial instrumentsinclude options contracts, futures contracts, options on futurescontracts, interest rate products, securities, equity contracts, etc.Large exchanges are required to process and store large amounts oftrading data every second of the trading day. Moreover, upon executingtrades, exchange computers must continually access and distribute marketdata, which is another form of trading data. The distribution of marketdata facilitates necessary market-driven decisions. Indeed, riskanalysis of current and future exposure is vital to ensuring a stablefinancial exchange. Often large databases are utilized to store andretrieve this trading data.

To select and aggregate trading data, conventional databases often usesorts, searches, indexes, and/or disc lookups. These requirements resultin substantial chip clock cycles and lead to delayed query results.Current analysis systems utilized to aggregate large quantities oftrading data are often executed in batch mode overnight because of thecomputing resources that are consumed by these activities. Often theaggregation and retrieval of trading data is not efficient enough toallow adequate information to be retrieved within the desired timeframe.Indeed, under traditional approaches, large amounts of trading datacannot be adequately analyzed in real-time, thereby preventing many usesof the data.

Prior art attempts to solve these problems have focused on building moreintelligent indexes to speed up selection and analysis of the datastored within a database. Yet other systems have attempted to reduceresponse time to users through the use of precomputed summary data.These and other attempts to more efficiently store and retrieve tradingdata do not adequately address the problem. For example, precomputedindexes cannot be rapidly adapted for changing user needs or changingdata. Additionally, precomputed data requires the user to specify thedata that needs to be precomputed. When there is a need to analyze datafrom different angles or perspectives, these conventional systems failto deliver results in a rapid fashion.

Existing order matching systems have similar drawbacks. As the volume oforders increases, existing order matching systems struggle to compareand match orders in an efficient manner.

Therefore, there exists a need in the art for systems and methods thatallow for the efficient processing, storage and searching of largeamounts of data in a time sensitive manner.

SUMMARY OF THE INVENTION

Aspects of the invention overcome at least some of the problems andlimitations of the prior art by providing systems and methods that allowfor the efficient storage and searching of large amounts of data.Pending orders may be arranged as a non-indexed collection of datarecords within one or more computer-readable media. Exemplarycomputer-readable media include processor cache memories, magneticmemories, hard disk drives, and optical disk drives. Solid-state memorymodules allow for rapid queries due to the lack of moving parts, such asthose associated with hard disk drives. The physical locations ofpending orders stored in a computer-readable medium may correspond tothe order in which the pending orders were received at a match engineand the order in which queries are performed. New orders are compared toorders in the non-indexed collection of orders in an attempt to matchorders. Order matching may be performed without the speed limitationsand overhead associated with indexed order collections.

Of course, the methods and systems disclosed herein may also includeother additional elements, steps, computer-executable instructions, orcomputer-readable data structures. The details of these and otherembodiments of the present invention are set forth in the accompanyingdrawings and the description below. Other features and advantages of theinvention will be apparent from the description and drawings, and fromthe claims.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention may take physical form in certain parts and steps,embodiments of which will be described in detail in the followingdescription and illustrated in the accompanying drawings that form apart hereof, wherein:

FIG. 1 shows a computer network system that may be used to implementaspects of the present invention;

FIG. 2 shows a flowchart of one illustrative method of storing tradingdata in a computing environment according to one aspect of theinvention;

FIGS. 3 a and 3 b illustrates illustrative collections of trading dataaccording to various embodiments of the present invention;

FIG. 4 illustrates yet another illustrative collection of trading datain accordance with the present invention;

FIG. 5 illustrates an exemplary graphical user interface that may beused to display market depth information;

FIG. 6 illustrates one exemplary collection of data arranged in asubstantially sequential ordering according to one embodiment of theinvention;

FIG. 7 illustrates a system for matching trades in accordance with anembodiment of the invention;

FIG. 8 illustrates a method of processing orders with the system shownin FIG. 7, in accordance with an embodiment of the invention; and

FIG. 9 illustrates a system for matching trades that uses redundantmatch engines in accordance with an embodiment of the invention.

DETAILED DESCRIPTION Exemplary Operating Environment

Aspects of the present invention are preferably implemented withcomputer devices and computer networks that allow users to exchangetrading information. An exemplary trading network environment forimplementing trading systems and methods is shown in FIG. 1.

An exchange computer system 100 receives orders and transmits marketdata related to orders and trades to users. Exchange computer system 100may be implemented with one or more mainframe, desktop or othercomputers. In one embodiment, a computer device uses a 64-bit processor.A user database 102 includes information identifying traders and otherusers of exchange computer system 100. Data may include user names andpasswords. An account data module 104 may process account informationthat may be used during trades. A match engine module 106 is included tomatch bid and offer prices. Match engine module 106 may be implementedwith software that executes one or more algorithms for matching bids andoffers. A trade database 108 may be included to store informationidentifying trades and descriptions of trades. In particular, a tradedatabase may store information identifying the time that a trade tookplace and the contract price. An order book module 110 may be includedto compute or otherwise determine current bid and offer prices. A marketdata module 112 may be included to collect market data and prepare thedata for transmission to users. A risk management module 134 may beincluded to compute and determine a user's risk utilization in relationto the user's defined risk thresholds. An order processing module 136may be included to decompose delta based and bulk order types forprocessing by order book module 110 and match engine module 106.

The trading network environment shown in FIG. 1 includes computerdevices 114, 116, 118, 120 and 122. Each computer device includes acentral processor that controls the overall operation of the computerand a system bus that connects the central processor to one or moreconventional components, such as a network card or modem. Each computerdevice may also include a variety of interface units and drives forreading and writing data or files. Depending on the type of computerdevice, a user can interact with the computer with a keyboard, pointingdevice, microphone, pen device or other input device.

Computer device 114 is shown directly connected to exchange computersystem 100. Exchange computer system 100 and computer device 114 may beconnected via a T1 line, a common local area network (LAN) or othermechanism for connecting computer devices. Computer device 114 is shownconnected to a radio 132. The user of radio 132 may be a trader orexchange employee. The radio user may transmit orders or otherinformation to a user of computer device 114. The user of computerdevice 114 may then transmit the trade or other information to exchangecomputer system 100.

Computer devices 116 and 118 are coupled to a LAN 124. LAN 124 may haveone or more of the well-known LAN topologies and may use a variety ofdifferent protocols, such as Ethernet. Computers 116 and 118 maycommunicate with each other and other computers and devices connected toLAN 124. Computers and other devices may be connected to LAN 124 viatwisted pair wires, coaxial cable, fiber optics or other media.Alternatively, a wireless personal digital assistant device (PDA) 122may communicate with LAN 124 or the Internet 126 via radio waves. PDA122 may also communicate with exchange computer system 100 via aconventional wireless hub 128. As used herein, a PDA includes mobiletelephones and other wireless devices that communicate with a networkvia radio waves.

FIG. 1 also shows LAN 124 connected to the Internet 126. LAN 124 mayinclude a router to connect LAN 124 to the Internet 126. Computer device120 is shown connected directly to the Internet 126. The connection maybe via a modem, DSL line, satellite dish or any other device forconnecting a computer device to the Internet.

One or more market makers 130 may maintain a market by providingconstant bid and offer prices for a derivative or security to exchangecomputer system 100. Exchange computer system 100 may also exchangeinformation with other trade engines, such as trade engine 138. Oneskilled in the art will appreciate that numerous additional computersand systems may be coupled to exchange computer system 100. Suchcomputers and systems may include clearing, regulatory and fee systems.

The operations of computer devices and systems shown in FIG. 1 may becontrolled by computer-executable instructions stored oncomputer-readable medium. For example, computer device 116 may includecomputer-executable instructions for receiving order information from auser and transmitting that order information to exchange computer system100. In another example, computer device 118 may includecomputer-executable instructions for receiving market data from exchangecomputer system 100 and displaying that information to a user.

Of course, numerous additional servers, computers, handheld devices,personal digital assistants, telephones and other devices may also beconnected to exchange computer system 100. Moreover, one skilled in theart will appreciate that the topology shown in FIG. 1 is merely anexample and that the components shown in FIG. 1 may be connected bynumerous alternative topologies.

Exemplary Embodiments

FIG. 2 shows a flowchart of one illustrative method of storing tradingdata in a computing environment according to one aspect of theinvention. As seen in the figure, a first trading record comprisingtrading data is received in step 205. The trading record may be an orderreceived at an exchange, a market data distributed by an exchange or atrade. In alterative embodiments of the invention, the trading recordmay be a record created by an exchange that indicates the state of anorder book, orders received and processed, or any other information thatmay be use by an exchange or entity involved with trading. The tradingdata may include one or more specific identifiers of an order or trade,including: the time and date of the order or trade, the individual orfirm that submitted an order, price information and/or theidentification and quantity of financial instruments. The trading recordmay comprise an order first transmitted from computer device 116 and/orPDA 122 through LAN 124 and/or Internet 126 and may be further processedby order processing module 136. In yet other embodiments, the tradingrecord received in step 205 may comprise market data distributed by oneor more of the modules within Exchange Computer System 100. As oneskilled in the art will realize, there are numerous other fields thatmay be included within a trading record.

In step 210, at least a portion of the data from the trading recordreceived in step 205 is stored on a computer readable medium. As usedherein, a computer-readable medium may include, for example, RAM, flashmemory, a hard disk drive, and/or an optical disk (CD ROM, DVD or otheroptical media). Solid-state memory modules allow for rapid queries dueto the lack of moving parts, such as those associated with hard diskdrives. In one embodiment, the medium is within the Exchange ComputerSystem 100 and may be associated with one or more modules, such as thematch engine module 136. FIG. 3 a illustrates a collection of tradingdata according to one aspect of the present invention. As seen in thefigure, a memory module 300, such as a RAM or optical disk, may store aplurality of trading records. For example, the trading record stored instep 205 may be visually represented as trading record 305. In step 215,a second trading record may be received. The second trading record maybe of a fixed length and have substantially the same information as thefirst trading record received in step 205. Yet in other embodiments, thesecond trading record may of a different length than the first tradingrecord. Yet in further embodiments, the second trading record may haveadditional fields not present in the first record and may compriseadditional data not present in the first record. In one such embodiment,optional step 225 (explained in more detail below) may be implemented todetermine if the trading record comprises more than one field.

In step 220, the second trading record (or a portion thereof) issequentially stored in relation to the first trading record 305, whereinthe data from the second trading record is stored substantiallyphysically adjacent to the data received from the first trading record305. One of the advantages of locating records close to one another isfaster reading times. Existing database systems may have data scatteredthroughout a memory device. Reading data arranged in this manner is timeconsuming because the reading process has to skip from one physicallocation to another physical location. For example, a hard disk drivemust physically move a reading head from location to location. FIG. 3 ashows one illustrative embodiment where data from the second tradingrecord 310 is stored in a sequential fashion in relation to the datastored from the first trading record 305. Unlike conventional databases,the trading data stored and as represented by 305 and 310 are notassociated with an index for locating the data. As additional dataand/or trading records are received, they may be stored in asubstantially sequential ordering. As used herein “substantialsequential ordering” means that data is physically positioned on acomputer-readable medium in a direction that a read operation willfollow and does not imply that a sort operation is performed on therecords or data before storing. For example, data 315 is storedsubstantially sequential to data 310, which is stored substantiallysequential to data 305. When memory module 300 is implemented with ahard disk drive, for example, a reading head may follow a straight pathto read records 305, 310 and 315.

While the exemplary embodiment does not have an index as used inconventional databases, the collection of data as represented by firsttrading records 305, 310 and 315 can perform row selection at the samespeed as an indexed database. Indeed, in some embodiments, eliminatingconventional databases indexes results in queries that have the samespeed for all columns in the table. Conventional database typically havean index on every column. This results in deleterious effects on theinsertion speed. Conversely, a collection of data organized according tothe various embodiments of the present invention allows for rapidinsertion speeds and is particularly useful and advantageous inreal-time insertion situations, such as those routinely encountered inthe trading industry. Moreover, by providing a collection of datawithout an associated database-type index, more space is available onthe computer readable medium to store data, such as that present in thedata of the first trading record and second trading record (305, 310).An increases in data storage may be achieved by eliminating the use of aconventional database-type index. In at least one implementation, theelimination of an index may double the amount of data that may be storedon the computer readable memory.

As one skilled in the art will appreciate, a computer-readable mediummay comprise a plurality of linked drives and/or modules, wherein thedata is stored in a sequential fashion as described above. In at leastone embodiment, the plurality of drives and/or modules may be atdifferent physical or remote locations. For example, FIG. 3 b shows twodistinct physical computer-readable media (330, 335) that are configuredto store data in a sequential ordering process. As seen in the figure,first trading record 305 is stored in the first portion ofcomputer-readable medium 330, sequentially followed by a first portionof second trading record 310 a. Since the trading record consisting ofsection 310 a and 310 b is too large to be entirely stored oncomputer-readable medium 330, the second portion of the second tradingrecord 310 b is stored on the first portion of computer-readable medium335. Trading record 315 is also stored on computer-readable medium 335and substantially follows the second portion of the second tradingrecord 310 b. In this regard, the trading records 305, 310, and 315 aresequentially stored on a plurality of computer-readable media arearranged in a sequential order. The computer-readable media, such ascomputer-readable media 330 and 335, do not have to be physicallyordered in sequential manner, but rather must be configured to besequentially store data.

As briefly mentioned above, one or more trading records may comprise aplurality of fields. In one such embodiment, optional step 225 may beimplemented to determine if one or more of the trading record comprisemore than one field. In one embodiment, upon determining that more thanone field exists, step 230 may optionally be initiated to parse a firstfield from one of the trading records. As shown in FIG. 4, data 405,which may be similar to trading record 305 is received and it isdetermined through a process, such as process 225, that it comprisesmultiple fields. Optional step 230 may be initiated to parse the datainto a plurality of fields. As shown in the figure, data 405 is parsedinto at least three fields, wherein financial instrument data 405 acomprises an identification of the financial instrument, such as anoption contract to purchase wheat in June, price data 405 b comprisesinformation on the price of the contract, and quantity data 405 c maycomprise information on the quantity, such as quantity of financialinstruments. As discussed above, more or fewer fields may be utilized invarious embodiments of the invention. Indeed, in one embodiment,optional step 235 may be implemented to determine if a field present inreceived data, such as trading record 405 comprises a new field, whereinupon the detection of a new field, a portion of the computer readablemedium may be allocated to store data associated with the new field(step 240). While step 225 is shown in relation to receipt of the firsttrading record, one skilled in the art will realize that the step may beutilized upon receipt of any of the trading records.

In one embodiment, data associated with a first field of a tradingrecord, such as financial instrument data 405 a may be stored in a firstlocation on the computer readable medium (step 245). Data associatedwith other fields of the same record is not stored substantiallysequential to financial instrument data 405 a, but may be placed on thecomputer readable memory at a different location (see exemplaryembodiment of step 250). Upon receiving another trading record, such astrading record 410, it too may be parsed into a plurality of dataassociated with different fields. For simplicity, FIG. 4 shows tradingrecord 410 subdivided according to the same fields as record 405. Asshown in the figure, step 250 sequentially stores the data having amatching field (410 a comprises information relating to the field of“financial instrument”) on the computer-readable memory, wherein data ofthe first field 405 a that was initially stored in step 245 issubstantially physically adjacent to the data of the first field 410 athat was stored in step 245.

As seen in FIG. 4, other matching fields of different trading records,such as trading records 405 and 410 may also be stored in the samemanner. For example, price fields 405 b and 410 b are storedsequentially wherein price data 410 b is substantially sequential to andfollows price data 405 b. (see also; quantity data 405 c and 410 c). Thedata may be stored sequentially as it is received and in at least oneembodiment is stored in real time allowing for the fast storage andmanipulation of the data without having to construct and update adatabase-type index. Moreover, while the illustrated computer-readablememory of FIG. 4 illustrates a single medium, one skilled in the artwill realize a plurality of computer readable media could be utilized toachieve the same aspects of the invention.

Embodiments of the invention also relate to methods of performing aquery on a computer readable medium, such as computer readable mediumshaving data stored in accordance with several or all of the steps andembodiments discussed in regards to FIGS. 2-4. In one embodiment, thequery relates to a method of processing an order received at a matchengine. An order for at least one financial instrument may be receivedat a match engine, which may be implemented, for example, with matchengine module 106. In one embodiment, at least one parameter or fieldmay be extracted from the order. Upon extracting the at least one fieldor parameter, the field(s) that were extracted are compared to fieldsand/or parameters within a non-indexed collection of data representingpending orders.

For example, looking back to FIG. 3 a, where trading records 305, 310and 315 represent pending orders, the comparison may be initiated at theupper starting portion of record 305 and proceed through trading records305, 310, and 315 in a sequential manner based on proximate physicallocation of the records. Since there is no database-type index, the datawithin trading records 305, 310 and 315 may be analyzed from differentangles or perspectives at a more rapid pace than utilizing conventionaldatabase structures. Indeed, in some situations certain fields of dataare unlikely to have data to meet the query being searched. For example,if the query relates to the quantity of financial instrument fields, aquery against data located in currency fields is unlikely to yielduseful information in many cases. Searching a collection of dataarranged such that records or fields are physically located next to oneanother in a memory module in the direction of a read operation of thesearch allows for faster query execution when compared to queriesperformed on indexed databases having records or fields distributedthroughout a memory module.

Yet in other embodiments, only distinct portions of trading records maybe queried. For example, in one embodiment the pending orders may beorganized as set forth in FIG. 4, wherein a plurality of trading recordsare stored wherein matching fields of different trading records, such astrading records 405 and 410 are stored in a substantially sequentialfashion without an associated database-like index. For example, pricefields 405 b and 410 b are stored sequentially and wherein price field410 b is substantially sequential to and follows price field 405 b.According to one embodiment of the invention, only data categorized ashaving certain fields will be queried. This determination may be basedon a user-input, an algorithm, or a combination of user preference and afunction of one or software applications.

This can be more readily seen when reviewing FIG. 4. If a query isdirected towards the price of a pending order, the comparison of thequery and the data stored on the computer readable medium may beinitiated at beginning of price data 405 b and proceed in asubstantially sequential fashion to price data 410 b and through anyadditional price data located following price data 410 b. The searchingand comparison of the price data within the compared data will beperformed without the use of a database-like index and will go in thesequential manner as described above. As stated above, the individualtrading records, such as 405 and 410 as well as the individual fields ofdata such as 405 a and 405 b may be of a fixed length, thereby allowinga user and/or computer device to readily and accurately estimate thetime to conduct the query of the trading records and/or individual datafields.

The speed at which queries may be performed when trading records arearranged as described above may be taken advantage of for other exchangeand trading related activities. For example, a match engine may matchtrades using aspects of the inventions. In another example traders,trading firms and exchange regulatory or enforcement divisions may wishto recreate the state of a market, such as pending bids and offers, at agiven time. One conventional approach includes recording a snapshot ofthe state of the market for every change in the market. These snapshotsrequire large amounts of storage space, even for data parameters thatmay not have changed since the last snapshot.

FIG. 5 illustrates an exemplary graphical user interface 500 that may beused to display market depth information and allow traders to tradefinancial instruments. The figure is helpful to aid the reader inunderstanding the type and amount of information that represents thestate of a market. Graphical user interface 500 includes a price andquantity grid 502. Price and quantity grid 502 may contain five columns.A buy column 504 displays a user's working buy order quantities. As usedherein, a user may be a trader. Each user will have different values inthis column reflecting their buy order quantity. A hit column 506displays the market bid quantities. Prices for individual rows aredisplayed in a price column 508. A take column 510 displays market askquantities. And, a sell column 512 displays a user's working sell orderquantities. Individual entries may be color coded to assist users inquickly interpreting the displayed information. For example, entries inbuy column 504 and hit column 506 may be in blue and entries in takecolumn 510 and sell column 512 may be in red.

In accordance with one embodiment of the invention, a trading firm,exchange or other entity may record trading records in a non-indexedcollection of data, as described above. The speed at which such acollection may be queried and processed allows such entities to quicklyrecreate the state of the market for any time period. For example, aninitial state of the market may first be determined and then all of theorders placed at an exchange may be processed in the same manner thatthey would be processed by an exchange until the desired point in time.For example, graphical user interface 500 (shown in FIG. 5) mayrepresent an initial state of a market. All of the incoming ordersreceived at an exchange may be stored sequentially in one or more memorymodules as a non-indexed collection of orders such that the physicallocation of the orders corresponds to the order in which they werereceived. A computer device may then be programmed to retrieve theorders and recreate the state of the market.

Graphical user interface 520 represents the state of a market at sometime after the state represented with graphical user interface 500. Ifwe assume that graphical user interface 500 represents the state thatexisted at 9:00 on Monday morning and graphical user interface 520represents the state that existed at 2:00 on the following Wednesday,the state represented with graphical user interface 520 may be recreatedby starting with the state representing with graphical user interface500 and processing orders in the sequential non-indexed collection oforders received until 2:00 on Wednesday.

Unlike conventional indexed databases storing and retrieving tradingdata according to one or more methods of the present invention does notrequire large quantities of trading data to be executed in batch modeovernight. Indeed, under traditional approaches, large amounts of datacould not be adequately analyzed in real-time, thereby preventing manyuses of the data. Under select embodiments of the invention, theanalysis of the data sequentially stored on the computer readable memorycan be continually processed in real-time to monitor activity while newdata is being written to the computer readable medium, all withouthaving to create, update, and maintain a space-consuming database indexand constant interruption to jump physical locations within the computerreadable medium to locate a certain data piece.

FIG. 6 illustrates one exemplary sequential non-indexed collection oforders stored on a computer-readable medium 600. As seen in the figure,computer readable medium 600 comprises a plurality of orders. Seen atthe upper end of computer readable medium 600 is order 605. Order 605may be, for example, any of the quantities and/or prices displayed inthe price and quantity grid 502. Order 610 may represent the next orderreceived at an exchange and order 615 may represent the next orderreceived at the exchange. One skilled in the art will appreciate thatintervals between the receipt of orders 605, 610 and 615 may not beuniform.

Recreating market conditions may be readily accessible by queryingmethods, for example, as described above. Indeed, by following one ormore embodiments of the invention, the analysis of the data sequentiallystored on the computer readable memory can be continually processed inreal-time to monitor activity while new data is being written to thecomputer-readable medium, all without having to create, update, andmaintain a space-consuming database index and constant interruption tojump physical locations within the computer readable medium to locate acertain data piece.

FIG. 7 illustrates a system for matching trades in accordance with anembodiment of the invention. Computer devices 702, 704 and 706 may beused to transmit orders for financial instruments to a match engine 708via a network 710. Network 710 may be implemented at least in part withthe Internet, a WAN, a LAN, a phone network or other infrastructure usedfor exchanging data between computer devices. Incoming orders arereceived at a processor 712. Processor 712 may encode incoming ordersand transmit them to a shared memory 714. Encoding may include reducingthe size of the order. For example, an order may be received atprocessor 712 that includes the name of a trading firm. During theencoding process, the trading firm name may be replaced with a numberthat represents the trading firm.

A second processor 716 may be configured to periodically check sharedmemory 714 for new orders. Processor 716 may include a cache memory 718that includes one or more order books, such as order book 720. Thephysical locations of pending orders stored in cache memory 718 maycorrespond to the order in which they were received at the match engine.When a new order is received, the order may be compared to orders thatare included in order book 720. The use of two processors 712 and 716allows for fast operation when matching of trades. One skilled in theart will appreciate that in an alternative embodiment the functionsperformed by processors 712 and 716 may be performed by a singleprocessor. In other embodiments, the functions performed by processors712 and 716 may be performed by three or more processors. An exemplaryprocessor that may be used with aspects of the invention is an IntelItanium II, which contains a 9 MB byte cache memory. Another exemplaryprocessor is the AMD Opteron processor, which utilizes Hypertransport™technology.

After trades are matched, market data may be generated by processor 716and then transmitted to shared memory 714. Processor 712 mayperiodically check shared memory 714 for market data messages. Whenmarket data messages are received, processor 712 may format or expandthe market data message and then distribute the market data message totrading entities, such as those represented by computer devices 702, 704and 706. Processor 712 may also distribute other information to tradingentities, such as acknowledgement messages.

The speed at which processor 716 may process orders and the low-cost ofsuch processors facilitates the use of redundant components and backupmechanisms. For example a backup processor 722 may include a cachememory 724 that includes an order book 726. Order book 726 may besynchronized with order book 720, such that in the event that processor716 fails, backup processor 722 may resume matching of trades. Asynchronization module 728 may be used to synchronize order books 720and 726. In one embodiment, processor 716 and backup processor 722transmit information identifying the states of order books 720 and 726to synchronization module 728. Synchronization module 728 may thencompare the states of the order books and make any adjustments that arenecessary.

In one alternative embodiment, match engine 708 may include severaldifferent processors that are configured to match a variety of differenttrades. Shared memory 714 may group new orders such that each of theprocessors knows which order to process. For example, a first processormay maintain a first order book and match trades against the first orderbook and a second processor may maintain a second order book for adifferent financial instrument and match trades for those financialinstruments.

Backup processor 722 may be included within match engine 708.Alternatively, backup processor 722 may be connected to match engine 708via a local area network or wide-area network. Backup processor 722 maybe in a different geographic location than processor 716. For exampleprocessor 716 may be located within a first premises and backupprocessor 722 may be located in a different premises to prevent allprocessors from failing because of a fire or other event at the firstpremises. Two or more processors may also be geographically distributedand may be configured to process orders originating from differentgeographic regions. For example, processor 716 may be located in Chicagoand may process orders originating in the United States and a secondprocessor may be located in London in may be configured to processorders originating in that region.

FIG. 8 illustrates a method of processing orders with the system shownin FIG. 7, in accordance with an embodiment of the invention. First, instep 802 pending orders are stored in a substantially sequentialnon-indexed collection on a computer readable medium. The computerreadable medium may include a cache memory of a processor to facilitaterapid processing of incoming orders. Next, in step 804 a new order for afinancial instrument is received at a match engine. The new order may beencoded in step 806. Encoding may include reducing the file size of theorder and placing the order into a standard format that is recognized bycomponents of the match engine. Next, in step 808 the encoded order maybe stored in a memory module. The memory module may include a RAM memorythat is accessible by more than one processor. In step 810, a processormay periodically check for new orders stored in the memory module. Inone embodiment, steps 806 and step 810 are performed by differentprocessors.

In step 812 the new order is compared to the plurality of pending ordersarranged in the non-indexed collection of substantially sequentialorders. It is then determined whether the new order matches one of thepending orders in step 814. When the new order does not match one of thepending orders, in step 816 the new order is added to the non-indexedcollection of substantially sequential orders. Step 816 may includeadding the new order to an existing order book. If the new order doesmatch one of the pending orders, a trade for the matching orders may beexecuted in step 818. Finally, in step 820 market data may be formattedand distributed.

FIG. 9 illustrates a system for matching trades that uses redundantmatch engines in accordance with an embodiment of the invention. A firstmatch engine 902 includes a first processor 904, a shared memory 906 anda second processor 908. Processor 908 includes a cache memory 910 thatmay include one or more order books, such as order book 912. A secondmatch engine 914 includes a first processor 916, a shared memory 918 anda second processor 920. Processor 920 includes a cache memory 922 thatmay include one or more order books, such as order book 924. Thecomponents within match engines 902 and 914 function similar tocorresponding components located within match engine 708 (shown in FIG.7).

The match system shown in FIG. 9 includes an input gateway 926. Inputgateway 926 receives orders, assigns identifying information to theorders and distributes the orders to match engines 902 and 914. Inputgateway 926 may be implemented with a computer device configured toroute data and assign identifying information. In operation computerdevice 928 may transmit an order for a financial instrument to inputgateway 916 via network 930. Network 930 may be implemented at least inpart with a WAN, LAN, phone network or other infrastructure used forexchanging data between computer devices. After receiving the order,input gateway 926 may assign an identification number to the order andtransmit the order to match engines 902 and 914. In alternativeembodiments of the invention, additional match engines may be includedand input gateway 926 may transmit orders to some or all of the matchengines.

In the embodiment shown, match engines 902 and 914 receive orders frominput gateway 926 and process those orders in parallel. Match engines902 and 914 include the same data in order books 912 and 924 and areconfigured to produce the same results. Output messages from processors904 and 916 are transmitted to an output gateway 932. Output gateway 932may be implemented with a computer device configured to route data. Inone embodiment of the invention input gateway 926 and output gateway 932are implemented with the same computer device. Output gateway 932 mayinclude a message memory 934 that stores information identifyingmessages that have been transmitted by output gateway 932. At least partof the identifying information may be assigned by input gateway 926. Theidentifying information may be used to make sure that data for an eventis only distributed once. For example, input gateway 926 may assign andidentification number to a new order and then transmit the order tomatch engines 902 and 914. Match engines 902 and 914 may process theorder in parallel and generate market data messages. The market datamessages include the identification number assigned by input gateway926. When market data messages are received at output gateway 932,output gateway may be configured to search identification numbers storedin message memory 934 to determine if a corresponding market datamessages has been transmitted. When a message is received that includesan identification number not stored in message memory 934, the messageis distributed to trading entities, such as to computer device 936 vianetwork 938. When a message is received that includes an identificationnumber that is stored in message memory 934, the message may bediscarded.

One skilled in the art will appreciate that a variety of differentschemes may be used to assign identifying information to data receivedat input gateway 926 and then filter data at output gateway 932. In oneembodiment of the invention a new order may be assigned anidentification number at input gateway 926 and derivative identificationnumbers may be assigned to messages associated with that order. Forexample, a new order may be assigned a 15 digit identification numberand an acknowledgment message may be assigned an identification numberthat consists of the 15 digit identification number followed by acharacter or number that identifies the type of message. This allowsmultiple messages associated with a single order to all be assignedunique identification numbers that are related and ensures that matchengines 902 and 914 assign the same identification numbers to createdmessages.

In the event of a failure of one of match engines 902 or 914, outputgateway 932 would receive messages from only one match engine andcontinue to process messages without any failure being apparent totrading entities. In embodiments that include more than two matchengines operating in parallel, the failure of one or two match engineswould not be apparent to trading entities. Match engines 902 and 914, aswell as any additional match engines, may be located in the samelocation or may be distributed to prevent a fire, network failure orother catastrophic event from halting the operation of all matchengines.

The speed at which incoming orders may be processed when pending ordersare arranged in a substantially sequential non-indexed collection in thecache memory of a processor allows for the processing of many types oforders. Existing match engine systems limit the type of orders thattraders may make. For example, it not practical to process an order thatdoes not have a standard format, such as an order to buy four particularcontracts and sell six other contracts, because of the time required tomatch a single novel order having several legs to several differentorders.

With the system described above the processing of orders can be quicklyperformed, which allows for many types of orders. For example, a tradermay enter a nonstandard order that contains multiple legs in differentmarkets. The systems shown in FIGS. 7 and 9 may rapidly attempt to matchall of the legs of the nonstandard order without incurring reductions inthroughput that would be incurred with conventional systems. Matchengines 708, 902 and 914 may be programmed to perform implied pricingfunctions for nonstandard orders. Alternatively, a trader may provideprices for one or more legs of a nonstandard order.

The present invention has been described herein with reference tospecific exemplary embodiments thereof. It will be apparent to thoseskilled in the art that a person understanding this invention mayconceive of changes or other embodiments or variations, which utilizethe principles of this invention without departing from the broaderspirit and scope of the invention as set forth in the appended claims.For example, aspects of the invention may be applied to data collectionsthat are not related to exchanges or trading. All are considered withinthe sphere, spirit, and scope of the invention.

1. A computer-implemented method of matching orders for financialinstruments, the method comprising: (a) receiving at a match engine anorder for a financial instrument; and (b) comparing the order in (a) toa plurality of pending orders arranged in a non-indexed collection ofsubstantially sequential orders located on a computer-readable medium.2. The method of claim 1, further including: (i) encoding the orderbefore (b).
 3. The method of claim 2, wherein (b) is performed at afirst processor and (i) is performed at a second processor.
 4. Themethod of claim 3, further including: (ii) storing the encoded order ina memory module; and (iii) at the second processor periodically checkingfor new orders stored in the memory module.
 5. The method of claim 1,wherein (b) is performed at a processor and the computer-readable mediumconsists of a memory module located within the processor.
 6. The methodof claim 1, wherein the plurality of orders are stored in a solid-statememory module.
 7. The method of claim 1, wherein the comparison isinitiated at a commencing location on the computer-readable medium andis conducted in a substantially sequential manner and continuesaccording to the proximate physical location of the plurality of pendingorders on the computer-readable medium.
 8. The method of claim 1,further including: (i) formatting and distributing market data.
 9. Themethod of claim 8, wherein (b) is performed at a first processor and (i)is performed at a second processor.
 10. The method of claim 1, whereinthe plurality of pending orders have a common a fixed length.
 11. Amatch engine configured to match orders for financial instruments, thematch engine comprising: a computer-readable medium containing anon-indexed collection of substantially sequential pending orders; and afirst processor configured to sequentially compare a new order to atleast a portion of the orders included in the non-indexed collection ofsubstantially sequential pending orders.
 12. The match engine of claim11, further including: a second processor configured to receive ordersand encode the received orders.
 13. The match engine of claim 12,further including: a memory module coupled to the first processor andthe second processor and that stores encoded orders.
 14. The matchengine of claim 13, wherein the first processor is configured toperiodically check for new orders stored in the memory module.
 15. Thematch engine of claim 11, wherein the computer-readable medium consistsof a memory module located within the first processor.
 16. The matchengine of claim 11, wherein the computer-readable medium comprises asolid-state memory module.
 17. The match engine of claim 11, wherein thecomputer-readable medium consists of a memory module having no movingparts.
 18. The match engine of claim 11, further including: a backupcomputer-readable medium containing a backup copy of the non-indexedcollection of substantially sequential pending orders; and a backupprocessor configured to sequentially compare a new order to at least aportion of the orders included in the backup copy of the non-indexedcollection of substantially sequential pending orders.
 19. The matchengine of claim 18, wherein the backup computer-readable medium consistsof a memory module located within backup processor.
 20. The match engineof claim 18, wherein the backup computer-readable medium comprises asolid-state memory module.
 21. The match engine of claim 18, wherein thebackup computer-readable medium consists of a memory module having nomoving parts.
 22. The match engine of claim 18, further including asynchronization module that synchronizes the computer-readable mediumand the backup computer-readable medium.
 23. A system for matchingorders for financial instruments, the system comprising: a first matchengine comprising a first computer-readable medium containing a firstnon-indexed collection of substantially sequential pending orders and afirst processor configured to sequentially compare a new order to atleast a portion of the orders included in the non-indexed collection ofsubstantially sequential pending orders; a second match enginecomprising a second computer-readable medium containing a secondnon-indexed collection of substantially sequential pending orders and asecond processor configured to sequentially compare a new order to atleast a portion of the orders included in the second non-indexedcollection of substantially sequential pending orders; and an outputgateway coupled to the first match engine and the second match engineand configured to filter redundant messages.
 24. The system of claim 23,further including an input gateway configured to receive orders, assignidentifying information and transmit orders to at least one matchengine.
 25. The system of claim 24 wherein the output gateway filtersredundant messages based at least in part on the identifying informationassigned by the input gateway.
 26. The system of claim 23, wherein thefirst processor includes a memory that contains the first non-indexedcollection of substantially sequential pending orders.
 27. The system ofclaim 23, wherein the second processor includes a memory that containsthe second non-indexed collection of substantially sequential pendingorders.